package com.example.anwserai.demos.web.test;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/*import com.example.anwserai.demos.web.util.QwenApiUtilQ4;*/
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.web.client.RestTemplate;

import static com.example.anwserai.demos.web.util.QwenApiUtilQ40317.restTemplateByOkHttp;


/**
 * @author cao
 * @title test
 * @date 2025/3/14 17:07
 * @description TODO
 */
@Slf4j
public class test {
    private static final RestTemplate restTemplate = restTemplateByOkHttp();

    private static String API_KEY = "sk-b84a7192f4d64f208720f09a363da791";
    private static String MODEL = "qwen-plus";
    private static String API_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";


    public static void main(String[] args) {
        String message = analyzeNotice();
        /*QwenApiUtilQ4.getContent(message);*/
    }
    public static String analyzeNotice() {
        try {
            // 1. 构建请求体（使用Fastjson序列化）
            JSONObject requestBody = new JSONObject();
            requestBody.put("model", MODEL);
            requestBody.put("temperature", 0.1);


            JSONArray messages = new JSONArray();
            messages.add(new JSONObject()
                    .fluentPut("role", "system")
                    .fluentPut("content", "### 角色\n" +
                            "你是一个专业的政府部门文员秘书，擅长各类公文的审核。\n" +
                            "\n" +
                            "### 背景\n" +
                            "政府某部门常年会发出各类公文，公文质量参差不齐，存在各种问题，现在上级要求对公文的质量进行审核，并对各种质量问题进行总结。\n" +
                            "\n" +
                            "### 任务要求\n" +
                            "1.分析输入的公文内容，判断存在的质量问题。\n" +
                            "2.如果为格式质量问题，需要定位问题所在的开始字符位置与结束字符位置。\n" +
                            "3.提取发文标题等信息。\n" +
                            "\n" +
                            "### 处理规则\n" +
                            "1.文稿篇幅是否合规\n" +
                            "2.如有的字段在会议通知内容中未找出，则该字段返回'未涉及'。\n" +
                            "\n" +
                            "### 输出格式\n" +
                            "1.返回数据格式请以标准的json格式，每个字段的值为字符串类型，不要包含额外内容。\n" +
                            "2.返回json字段及处理要求：\n" +
                            "  - fileContent：正文内容。提取正文内容，排除页眉、页脚、标题、抬头和表格。\n" +
                            "  - errorcontent：出错位置。定位规则：检测正文文本中的错别字，并返回共有多少错别字，且每个错别字的位置信息。输出示例：'文中一共存在两个错别字。第一个错别词为“拟好”，起始位置为正文中的第13个汉字，结束位置为正文中的第14个汉字；第二个错别词为“步尸霸”，起始位置为正文中的24位，结束位置为正文中的26位;'.\n" +
                            "  - doc_title：发文标题。定位规则：从文本开头提取首个以显著标识（如单独成行的###、加粗或居中）开头的主标题，排除附件名称。输出示例：'关于...的通知'；标题一般会包含'关于'前缀及'通知''决定'等文种词，有的公文标题有多行(在'关于'前的文本也可能是标题。要求完整保留。\n" +
                            "  - is_length_Compliance：文稿篇幅是否合规。对正文字数进行判断，检查正文字数是否超过4000字，低于4000字返回结果'文章篇幅合规'。高于4000字的文件注意点：\n" +
                            "     - 如果文件中标题和正文部分中包含“全局性”、“综合性”、“整体性”的文件，其正文部分字数低于5000字返回结果'文章篇幅合规'。\n" +
                            "\t - 其他情况统计正文字数，返回'正文部分字数为6399字，建议缩短篇幅'。\n" +
                            "  - is_completion_level：附件完齐程度。判断文件是否具有以下附件：发文说明、征求意见情况、定密（密级和保密期限）审核表、发文依据文件、风险评估报告、公平竞争审查意见、合法性审核意见。涉及会议活动的应附具会议活动方案、背景资料要件材料。并将缺失文档标明。输出示例：“附件完齐”，“附件不齐全，缺失发文说明”。\n" +
                            "  - accuracy_information：信息准确程度。判断文件是否有无常识性错误，无错字、多字、别字、漏字；引用人名、职务、地名、机构名、事件、时间、数字、引文、文号等信息准确；序号、页码排列准确。并标明出错位置。输出示例：'信息不准确。存在一个错别词，第一个错别词为“拟好”，起始位置为正文中的第13个汉字，结束位置为正文中的第14个汉字；存在一个漏字情况，第一个漏字为“我喜你”，起始位置为正文中的第33个汉字，结束位置为正文中的第35个汉字；'。\n" +
                            "  - is_Complete_elements: 要素是否齐全。判断文件中版头、主体、版记等公文各要素是否完整规范；判断段落、字体、纸张、排版等格式是否符合规范；判断文字、数字、计量单位和标点符号等用法是否符合规范。并将标明不符合地方\"+\"输出示例：“要素不齐全，标点符号使用错误。\n" +
                            "  - is_meet_requirements：满足条例规定。判断文件是否文种使用正确,发文规格合适,公文格式规范。并将标明不规范地方\"+\"输出示例：“文种使用正确。\n" +
                            "  - is_unity_coherence：文理是否通顺。判断文件是否主题鲜明、标题清晰、内容完整、结构严谨、语言庄重、表述简练、用词规范。标题与内容匹配，语法准确，修辞得当，无相同内容前后表述不一致、同类内容分散、同一句话反复出现、角度不对、文理不通、词不达意的情况。并将标明不规范地方\"+\"输出示例：“文理通顺”。\n" +
                            "\n" +
                            "### 输出样例：\n" +
                            "  - \"doc_title\": \"关于做好全市高层民用建筑消防设施隐患排查整治及城镇消防站规划建设工作督导检查发现问题整改工作的通知\",\n" +
                            "  - \"is_length_Compliance\": \"文章篇幅合规\"\n" +
                            "  - \"fileContent\": \"近期，市小芳暗拳委员会组成4个督导检查组，对全市高层民用建筑消防设施隐患排查整治专项行动及城镇消防站规划建设工作开展情况进行了督导检查，市消防、公安、住建、城管等部门和市政府督查室参与督导。\"\n" +
                            "  -\"errorcontent\": \"文中一共存在两个错别字。第一个错别词为“拟好”，起始位置为正文中的第13个汉字，结束位置为正文中的第14个汉字；第二个错别词为“步尸霸”，起始位置为正文中的24位，结束位置为正文中的26位;\"\n" +
                            "  -\"accuracy_information\": \"文中一共存在两个错别字。第一个错别词为“拟好”，起始位置为正文中的第13个汉字，结束位置为正文中的第14个汉字；第二个错别词为“步尸霸”，起始位置为正文中的24位，结束位置为正文中的26位;\"\n" +
                            "  -\"is_completion_level\": \"附件不齐全，缺失发文说明、征求意见情况、定密（密级和保密期限）审核表、发文依据文件、风险评估报告、公平竞争审查意见、合法性审核意见等发文要件。\"\n" +
                            "  -\"is_Complete_elements\": \"要素齐全\"\n" +
                            "  -\"is_meet_requirements\": \"文种使用正确\",\n" +
                            "  -\"is_unity_coherence\": \"文理通顺\""));

            messages.add(new JSONObject()
                    .fluentPut("role", "user")
                    .fluentPut("content", "请分析以下督察通知：\n" + "关于做好全市高层民用建筑消防设施\n" +
                            "隐患排查整治及城镇消防站规划建设工作督导\n" +
                            "检查发现问题整改工作的通知\n" +
                            "\n" +
                            "各区、市人民政府，西海岸新区管委，市消防安全委员会相关成员单位：\n" +
                            "近期，市小芳暗拳委员会组成4个督导检查组，对全市高层民用建筑消防设施隐患排查整治专项行动及城镇消防站规划建设工作开展情况进行了督导检查，市消防、公安、住建、城管等部门和市政府督查室参与督导。\n" +
                            "此次督导检查共发现问题19项，根据市政府有关领导指示要求，现将有关情况进行挂牌督办，对于本轮督导检查发现的问题（见附件），请各责任单位切实采取有效措施，按照整改要求，如期高质量完成整改。各单位请于11月30日17:00前上报整改工作部署情况，12月起每月15日、30日15:00前上报整改工作开展、完成情况至市消防安全委员会办公室（金宏网：青岛市消防救援支队防火监督处）。市政府督查室将督帮一体助力推进落实。\n" +
                            "\n" +
                            "     附件：问题清单\n" +
                            "\n" +
                            "                              青岛市消防安全委员会\n" +
                            "                                2023年11月29日\n"));

            requestBody.put("messages", messages);


            HttpHeaders httpHeaders = new HttpHeaders();
            httpHeaders.add("Content-Type", "application/json");
            httpHeaders.add("Authorization", "Bearer " + API_KEY);

            HttpEntity<String> entity = new HttpEntity<>(requestBody.toString(), httpHeaders);
            return restTemplate.exchange(API_URL, HttpMethod.POST, entity, String.class).getBody();
        } catch (Exception e) {
            log.error("请求ai过程中出错", e);
            throw new RuntimeException("请求ai过程中出错");
        }
    }
}
